﻿using CREAPA.RepositorioADO;
using CREAPA.UL.Web.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CREAPA.UL.Web.Controllers
{
    public class SetorController : Controller
    {
        SetorRepositorioADO setorADO = new SetorRepositorioADO();
        private siscreaEntitiesBD db = new siscreaEntitiesBD();

        [Authorize]
        public ActionResult Index()
        {
            string usu = User.Identity.Name;
            var permissao = new SelectList(db.FuncionarioPermissoes.Where(p => p.Login == usu && (p.Permissao == 10 || p.Permissao == 11)));

            if (permissao.Count() > 0)
            {
                var listaSetor = setorADO.ListarSetor();
                return View(listaSetor);
            }
            else
            {
                TempData["notice"] = "Você não tem permissão para acessar essa página. É necessária a permissão: 0010";
                return RedirectToAction("../Os/Erro");
            }
        }

        [Authorize]
        public ActionResult Cadastrar()
        {
            ViewBag.Inspetoria = new SelectList(db.Inspetorias.OrderBy(p => p.Nome), "Id", "Nome");
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Cadastrar(CREAPA.Dominio.Setor setor)
        {
            ViewBag.Inspetoria = new SelectList(db.Inspetorias.OrderBy(p => p.Nome), "Id", "Nome", setor.Inspetoria);
            if (ModelState.IsValid)
            {
                setorADO.Salvar(setor);
                return RedirectToAction("Index");
            }
            return View(setor);
        }

        [Authorize]
        public ActionResult Alterar(string id)
        {
            var setor = setorADO.ListarPorId(id);
            ViewBag.Inspetoria = new SelectList(db.Inspetorias.OrderBy(p => p.Nome), "Id", "Nome", setor.Inspetoria);
            if (setor == null)
            {
                return HttpNotFound();
            }
            return View(setor);
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Alterar(CREAPA.Dominio.Setor setor)
        {
            ViewBag.Inspetoria = new SelectList(db.Inspetorias.OrderBy(p => p.Nome), "Id", "Nome", setor.Inspetoria);
            if (ModelState.IsValid)
            {
                setorADO.Salvar(setor);
                return RedirectToAction("Index");
            }
            return View(setor);
        }

        [Authorize]
        public ActionResult Excluir(string id)
        {
            var setor = setorADO.ListarPorId(id);

            ViewBag.Inspetoria = new SelectList(db.Inspetorias.OrderBy(p => p.Nome), "Id", "Nome", setor.Inspetoria);
            if (setor == null)
            {
                return HttpNotFound();
            }
            return View(setor);
        }

        [HttpPost, ActionName("Excluir")]
        [ValidateAntiForgeryToken]
        public ActionResult ExcluirConfirmado(int id)
        {
            setorADO.Excluir(id);
            return RedirectToAction("Index");
        }
    }
}
